package com.wkbb.common.utils;


import io.swagger.models.auth.In;

import java.math.BigDecimal;

/**
 * @Auther: liyue
 * @Date: 2019/8/23 17:01
 * @Description:
 */
public class DoubleUtil {

    private final static String ZERO = "0";

    /**
     * String转double,为空返回0
     *
     * @param str
     * @return
     */
    public static Double parseDouble(String str) {
        if (str == null || str.equals(ZERO) || str.length() == 0) {
            return 0.0;
        }
        return Double.parseDouble(str);
    }

    /**
     * String转double,为空返回null
     *
     * @param str
     * @return
     */
    public static Double parseDoubleNull(String str) {
        if (str == null || str.equals(ZERO) || str.length() == 0) {
            return null;
        }
        return Double.parseDouble(str);
    }

    /**
     * 保留小数,四舍五入
     *
     * @param data
     * @param amount
     * @return
     */
    public static Double round(Double data, int amount) {
        if (data == null)
            return null;
        //利用BigDecimal来实现四舍五入.保留一位小数
        double result = new BigDecimal(data).setScale(amount, BigDecimal.ROUND_HALF_UP).doubleValue();
        //1代表保留1位小数,保留两位小数就是2,依此累推
        //BigDecimal.ROUND_HALF_UP 代表使用四舍五入的方式
        return result;
    }


    /**
     * 保留小数,四舍五入
     *
     * @param data
     * @param amount
     * @return
     */
    public static Double round(String data, int amount) {
        if (data == null)
            return null;
        //利用BigDecimal来实现四舍五入.保留一位小数
        double result = new BigDecimal(data).setScale(amount, BigDecimal.ROUND_HALF_UP).doubleValue();
        //1代表保留1位小数,保留两位小数就是2,依此累推
        //BigDecimal.ROUND_HALF_UP 代表使用四舍五入的方式
        return result;
    }

    public static int roundToInt(Double data) {
        String str = round(data, 0) + "";
        return Integer.parseInt(str.split("\\.")[0]);
    }

    public static int ratio(Double data) {
        return roundToInt(data * 100);
    }

    public static int ratio(Float data) {
        return roundToInt(data.doubleValue() * 100);
    }


    /**
     * 计算百分比,返回结果带百分符号
     *
     * @param dividend
     * @param divisor
     * @return
     */
    public static String ratios(Double dividend, Double divisor) {
        if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
            return null;
        return round(dividend / divisor * 100, 2) + "%";
    }


}